home *** CD-ROM | disk | FTP | other *** search
/ PC World 2006 October / PCWorld_2006-10_cd.bin / domacnost a kancelar / winorganizer / WinOrg.exe / PluginsAndCOM / Plugins / Demo / fTree.pas < prev   
Pascal/Delphi Source File  |  2005-07-06  |  2KB  |  79 lines

  1. unit fTree;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   ComCtrls, StdCtrls, ComObj, ExtCtrls;
  8.  
  9. type
  10.   TfrmTree = class(TForm)
  11.     TreeView1: TTreeView;
  12.     Panel1: TPanel;
  13.     Button1: TButton;
  14.   private
  15.     { Private declarations }
  16.     function AddNode(AParent: TTreeNode; const AText: String; ID: Integer): TTreeNode;
  17.     procedure AddDoc(AParent: TTreeNode; ADoc: Variant);
  18.   public
  19.     { Public declarations }
  20.     class procedure Execute;
  21.   end;
  22.  
  23. var
  24.   frmTree: TfrmTree;
  25.  
  26. implementation
  27.  
  28. {$R *.DFM}
  29.  
  30. { TfrmTree }
  31.  
  32. class procedure TfrmTree.Execute;
  33. var
  34.   WOrg, ADoc: Variant;
  35. begin
  36.   WOrg := CreateOLEObject('WinOrganizer.App');
  37.   Application.Handle := WOrg.Handle;
  38.  
  39.   with TfrmTree.Create(Application) do
  40.   try
  41.     if WOrg.FileList.ActiveIndex < 0 then
  42.       AddNode(nil, 'No file selected', 0)
  43.     else
  44.     begin
  45.       ADoc := WOrg.FileList.ActiveFile.Root;
  46.       AddDoc(nil, ADoc);
  47.     end;
  48.  
  49.     if TreeView1.Items[0].Count > 0 then
  50.       TreeView1.Items[0].Expand(False);
  51.     ShowModal;
  52.   finally
  53.     Free;
  54.   end;
  55.  
  56. end;
  57.  
  58. function TfrmTree.AddNode(AParent: TTreeNode; const AText: String;
  59.   ID: Integer): TTreeNode;
  60. begin
  61.   Result := TreeView1.Items.AddChildObject(AParent, AText, Pointer(ID));
  62. end;
  63.  
  64. procedure TfrmTree.AddDoc(AParent: TTreeNode; ADoc: Variant);
  65. var
  66.   i: Integer;
  67.   ANode: TTreeNode;
  68. begin
  69.   if ADoc.isHidden then exit;
  70.  
  71.   ANode := AddNode(AParent, ADoc.Text, ADoc.ID);
  72.  
  73.   if ADoc.isAccessible then
  74.     for i := 0 to ADoc.NodeCount - 1 do
  75.       AddDoc(ANode, ADoc.Nodes[i]);
  76. end;
  77.  
  78. end.
  79.